#pragma once

#include <AST/expr/var/VarAST.hpp>

class DotAST final : public Var {
  private:
    Var *lhs, *rhs;

  public:
    DotAST(Expr *lhs, Expr *rhs);
    virtual ~DotAST() = default;

    virtual Value *codegen() override;

    virtual Value *refCodegen() override;

    virtual Value *valCodegen() override;

    friend class graphviz::GraphGenerator;

    virtual VisitResult accept(ASTVisitor &visitor) const override {
        return visitor.visitDotAST(this);
    }
};
